As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Many information handling systems have or support two or more distinct operational environments. Immediately following power on or system reset, the system processor begins to execute in an operational mode referred to as real mode. Real mode execution is required on x86 based systems to guarantee backwards compatibility with legacy systems. The real mode environment is, in at least two respects, a restrictive environment because the accessible memory space is relatively small and because multithreaded execution is not supported.
While in the real mode operating environment, information handling systems generally identify and configure the system resources including peripheral devices. Configuring peripheral devices such as persistent storage devices is especially important because these devices usually contain the system's operating system code. Therefore, the ability to communicate in real mode with persistent storage is essential.
For many years, the persistent storage market was dominated by devices that were compliant with Advanced Technology Attachment (ATA). ATA, which is also commonly referred to as IDE (Integrated Drive Electronics) is an interface for connecting storage devices including hard disks and CD ROM devices to an information handling system such as a desktop, laptop, or server class computer system. ATA, which is a parallel interface, was retroactively referred to as Parallel ATA (PATA) with the 2003 introduction of the Serial ATA (SATA) interface.
Serial ATA improves on PATA in at least three ways. Serial ATA interconnects can be longer than PATA interconnects, Serial ATA interconnects have a substantially smaller profile than PATA interconnects, and Serial ATA is substantially faster than PATA. Because of these advantages, Serial ATA has rapidly and substantially displaced Parallel ATA as the storage interface of choice for most system manufacturers and vendors.
With the rapid acceptance of Serial ATA, SATA device manufacturers and system manufacturers alike are anxious to standardize on a controller implementation. Advanced Host Controller Interface (AHCI) is a specification for one such implementation. AHCI controllers support as many as 32 ports, each of which may be attached to a SATA device.
Among other things, AHCI specifies numerous data structures used by AHCI controllers. These data structures include port specific data structures including, as an example, command lists. An instance of each port specific AHCI data structure, not surprisingly, is required for each AHCI controller port. For a 32 port controller, the port specific data structures can consume a substantial amount of memory. The memory required to implement AHCI controllers may be especially problematic in an operating environment, such as the real mode operating environment, characterized by a limited memory space.